/*
 * Copyright (C) 2017 yixun All Rights Reserved.
 * 
 * CustTagMapper.java
 */
package com.emm.yixun.basic.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;

import com.emm.yixun.common.app.servletentity.CustTaglistRes;
import com.emm.yixun.common.model.CustTag;
import com.emm.yixun.common.model.CustTagInfo;
import com.emm.yixun.common.model.dto.CustTagDto;
/**
 * [文件名称]<br>
 * CustTagMapper.java<br>
 * <br>
 * [文件描述]<br>
 * 客户标签信息表 mapper<br>
 * <br>
 * [修改记录]<br>
 * 2017-11-01 15:00:17 创建<br>
 * @version 1.00
 */
public interface CustTagMapper {
    
	/**
	 * 新增
	 * @param custTag 新增BEAN信息
	 * @return 操作行数
	 */
	public int add(CustTag custTag);
	/**
	 * 删除
	 * @param custTagDto 满足删除的条件
	 * @return 操作行数
	 */
    public int del(CustTagDto custTagDto);
	/**
	 * 删除
	 * @param ids 待删除的唯一主键拼接的字符串,主键间以,隔开
	 * @return 操作行数
	 */
    public int dels(String ids);
    /**
     * 编辑
     * @param custTag 需要编辑的BEAN信息
     */
    public int edit(CustTag custTag);
    /**
     * 编辑
     * @param custTagDto 需要编辑的BEAN信息
     * @param ids 待编辑的唯一主键拼接的字符串,主键间以,隔开
     * @return 更新行数
     */
    public int edits(@Param("custTagDto")CustTag custTag,@Param("ids")String ids);
    /**
     * 搜索总数
     * @param custTagDto 搜索条件
     * @return 符合条件记录总数
     */
	public int count(CustTagDto custTagDto);
    /**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @param beginNum 分页开始页不包含
	 * @param endNum 分页结束页不包含
	 * @return 分页数据
	 */
	public List<CustTag> list(@Param("custTagDto")CustTagDto custTagDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);
   
    /**
	 * 搜索 
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public List<CustTag> selectListByDto(@Param("custTagDto")CustTagDto custTagDto);
	
    /**
	 * 搜索 - 支持分页
	 * @param blackWhiteList blackWhiteList(搜索条件)
	 * @return 分页数据
	 */
	public CustTag selectByDto(@Param("custTagDto")CustTagDto custTagDto);
	
	/**
	 * @param id
	 * @return
	 * 根据id查询记录
	 */
	public CustTag selectById(@Param("id")Long id);
	
	/**
     * 搜索总数
     * @param custTagDto 搜索条件
     * @return 符合条件记录总数
     */
    public int cusTagCount(CustTagDto custTagDto);
    /**
     * 搜索 - 支持分页
     * @param blackWhiteList blackWhiteList(搜索条件)
     * @param beginNum 分页开始页不包含
     * @param endNum 分页结束页不包含
     * @return 分页数据
     */
    public List<CustTagInfo> cusTaglist(@Param("custTagDto")CustTagDto custTagDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);
    
    /**
     * 搜索总数
     * @param custTagDto 搜索条件
     * @return 符合条件记录总数
     */
    public int cusTagInfoCount(CustTagDto custTagDto);
    /**
     * 搜索 - 支持分页
     * @param blackWhiteList blackWhiteList(搜索条件)
     * @param beginNum 分页开始页不包含
     * @param endNum 分页结束页不包含
     * @return 分页数据
     */
    public List<CustTagInfo> cusTagInfolist(@Param("custTagDto")CustTagDto custTagDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);
    
    /**
     * 搜索总数
     * @param custTagDto 搜索条件
     * @return 符合条件记录总数
     */
    public int customerTagCount(CustTagDto custTagDto);
    /**
     * 搜索 - 支持分页
     * @param blackWhiteList blackWhiteList(搜索条件)
     * @param beginNum 分页开始页不包含
     * @param endNum 分页结束页不包含
     * @return 分页数据
     */
    public List<CustTaglistRes> customerTaglist(@Param("custTagDto")CustTagDto custTagDto,@Param("beginNum")int beginNum,@Param("endNum")int endNum);

    /**
     * 搜索总数
     * @param custTagDto 搜索条件
     * @return 符合条件记录总数
     */
    public int customerQuestionnaireCount(@Param("custTagDto")CustTagDto custTagDto, @Param("projectCode")String projectCode);
    /**
     * 搜索 - 支持分页
     * @param blackWhiteList blackWhiteList(搜索条件)
     * @param beginNum 分页开始页不包含
     * @param endNum 分页结束页不包含
     * @return 分页数据
     */
    public List<CustTaglistRes> customerQuestionnaireList(@Param("custTagDto")CustTagDto custTagDto, @Param("projectCode")String projectCode, @Param("beginNum")int beginNum,@Param("endNum")int endNum);
    
    /**
     * 获取问题答案
     * @param projectId
     * @param question
     * @return
     */
    public List<CustTaglistRes> getCustomerAnswerList(@Param("projectId")Long projectId, @Param("questionnaireId")Long questionnaireId);
    
    /**
     * 通过问题ID和客户ID获取标签答案ID
     * @param questionId 问题ID
     * @param customerId 客户ID
     * @return 标签答案ID
     */
    public Long getCusTagIdByQuestionId(@Param("questionId")String questionId, @Param("customerId")Long customerId);
}
